package models4admin

import (
	"Gin-Gorm-boke/boke_common/models"
	"github.com/guregu/null"
	"gorm.io/gorm"
)

type Menu struct {
	gorm.Model
	Id         int           `gorm:"column:id;" json:"id"`
	MenuName   string        `gorm:"column:menu_name;" json:"menuName"`
	ParentId   null.Int      `gorm:"column:parent_id;default:0" json:"parentId"`
	OrderNum   null.Int      `gorm:"column:order_num;default:0" json:"orderNum"`
	Path       string        `gorm:"column:path;default:''" json:"path"`
	Component  string        `gorm:"column:component;" json:"component"`
	IsFrame    null.Int      `gorm:"column:is_frame;default:1" json:"isFrame"`
	MenuType   string        `gorm:"column:menu_type;default:''" json:"menuType"`
	Visible    string        `gorm:"column:visible;default:'0'" json:"visible"`
	Status     string        `gorm:"column:status;default:'0'" json:"status"`
	Perms      string        `gorm:"column:perms;" json:"perms"`
	Icon       string        `gorm:"column:icon;default:'#'" json:"icon"`
	CreateBy   int           `gorm:"column:create_by;" json:"createBy"`
	CreateTime models.MyTime `gorm:"column:created_at;" json:"createTime"`
	UpdateTime models.MyTime `gorm:"column:updated_at;" json:"updateTime"`
	UpdateBy   int           `gorm:"column:update_by;" json:"updateBy"`
	Remark     string        `gorm:"column:remark;default:''" json:"remark"`
	DelFlag    string        `gorm:"column:del_flag;default:0" json:"delFlag"`
}
type MenuVo struct {
	Id       int      `gorm:"column:id;" json:"id"`
	MenuName string   `gorm:"column:menu_name;" json:"label"`
	ParentId null.Int `gorm:"column:parent_id;default:0" json:"parentId"`
	Children []MenuVo `json:"children"`
}

type Router struct {
	Id          int           `gorm:"column:id;" json:"-"`
	IdStr       string        `json:"id"`
	MenuName    string        `gorm:"column:menu_name;" json:"menuName"`
	ParentId    null.Int      `gorm:"column:parent_id;default:0" json:"-"`
	ParentIdStr string        `json:"parentId"`
	OrderNum    null.Int      `gorm:"column:order_num;default:0" json:"orderNum"`
	Path        string        `gorm:"column:path;default:''" json:"path"`
	Component   string        `gorm:"column:component;" json:"component"`
	IsFrame     null.Int      `gorm:"column:is_frame;default:1" json:"isFrame"`
	MenuType    string        `gorm:"column:menu_type;default:''" json:"menuType"`
	Visible     string        `gorm:"column:visible;default:'0'" json:"visible"`
	Status      string        `gorm:"column:status;default:'0'" json:"status"`
	Perms       string        `gorm:"column:perms;" json:"perms"`
	Icon        string        `gorm:"column:icon;default:'#'" json:"icon"`
	CreateBy    int           `gorm:"column:create_by;" json:"createBy"`
	CreateTime  models.MyTime `gorm:"column:created_at;" json:"createTime"`
	UpdateTime  models.MyTime `gorm:"column:updated_at;" json:"updateTime"`
	UpdateBy    int           `gorm:"column:update_by;" json:"updateBy"`
	Remark      string        `gorm:"column:remark;default:''" json:"remark"`
	DelFlag     string        `gorm:"column:del_flag;default:0" json:"delFlag"`
	Children    []Router      `json:"children"`
}

func (Menu) TableName() string {
	return "sys_menu"
}
